//package info.guoyang.basic.util;
//
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.InputStreamReader;
//import java.sql.Blob;
//import java.sql.Connection;
//import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import java.sql.ResultSetMetaData;
//import java.sql.SQLException;
//import java.sql.Statement;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import com.martian.utils.tools.LogTools;
//import com.martian.utils.tools.StringTools;
//
//public class DataTools {
//	private static final String VARCHAR = "VARCHAR";
//
//	private static final String CHAR = "CHAR";
//
//	private static final String INTEGER = "INTEGER";
//
//	private static final String SMALLINT = "SMALLINT";
//
//	private static final String BIGINT = "BIGINT";
//
//	private static final String REAL = "REAL";
//
//	private static final String DOUBLE = "DOUBLE";
//
//	private static final String DECIMAL = "DECIMAL";
//
//	private static final String BLOB = "BLOB";
//
//	public static List<Map<String, Object>> qryTableBySQL(String sql)
//			throws SQLException, IOException {
//		Connection conn = null;
//		PreparedStatement ps = null;
//		ResultSet rs = null;
//		List<Map<String, Object>> list = null;
//		LogTools.debug(sql);
//		try {
//			conn = DBTools.getJndiConnection();
//			ps = conn.prepareStatement(sql);
//			rs = ps.executeQuery();
//			list = valueOfResultSet(rs);
//		} catch (SQLException e) {
//			throw e;
//		} finally {
//			com.martian.dao.tools.DBTools.closeConnection(conn, ps, rs);
//		}
//		return list;
//	}
//
//	public static Object qryOneValueBySQL(String sql) throws SQLException {
//		Connection conn = null;
//		PreparedStatement ps = null;
//		ResultSet rs = null;
//		LogTools.debug(sql);
//		try {
//			conn = DBTools.getJndiConnection();
//			ps = conn.prepareStatement(sql);
//			rs = ps.executeQuery();
//			if (rs.next())
//				return rs.getObject(1);
//		} catch (SQLException e) {
//			throw e;
//		} finally {
//			com.martian.dao.tools.DBTools.closeConnection(conn, ps, rs);
//		}
//		return null;
//	}
//
//	public final static int updateTable(String sql) throws SQLException {
//		Connection conn = null;
//		PreparedStatement ps = null;
//		LogTools.debug(sql);
//		try {
//			conn = com.anyi.business.bank.maintenance.pub.DBTools
//					.getJndiConnection();
//			ps = conn.prepareStatement(sql);
//			return ps.executeUpdate();
//		} catch (SQLException e) {
//			LogTools.error(e);
//			throw e;
//		} finally {
//			com.martian.dao.tools.DBTools.closeConnection(conn, ps, null);
//		}
//	}
//
//	public static final List<Map<String, Object>> valueOfResultSet(ResultSet rs)
//			throws SQLException, IOException {
//		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
//		while (rs.next()) {
//			Map<String, Object> m = new HashMap<String, Object>();
//			ResultSetMetaData rsmd = rs.getMetaData();
//			for (int i = 1; i <= rsmd.getColumnCount(); i++) {
//				String columnName = rsmd.getColumnName(i);
//				String columnType = rsmd.getColumnTypeName(i);
//				setValue(rs, m, columnName, columnType);
//			}
//			list.add(m);
//		}
//		return list;
//	}
//
//	private static void setValue(ResultSet rs, Map<String, Object> m,
//			String name, String type) throws SQLException, IOException {
//		if (type.equalsIgnoreCase(VARCHAR) || type.equalsIgnoreCase(CHAR))
//			m.put(name, rs.getString(name));
//		else if (type.equalsIgnoreCase(INTEGER)
//				|| type.equalsIgnoreCase(SMALLINT)
//				|| type.equalsIgnoreCase(BIGINT))
//			m.put(name, rs.getLong(name));
//		else if (type.equalsIgnoreCase(REAL))
//			m.put(name, rs.getFloat(name));
//		else if (type.equalsIgnoreCase(DOUBLE))
//			m.put(name, rs.getDouble(name));
//		else if (type.equalsIgnoreCase(DECIMAL))
//			m.put(name, rs.getBigDecimal(name));
//		else if (type.equalsIgnoreCase(BLOB)) {
//			m.put(name, bytes2Object((rs.getBlob(name))));
//		} else
//			LogTools.warn(StringTools.andString(
//					"DO NOT REGISTERED COLUMN TYPE:", type));
//	}
//
//	private static Object bytes2Object(Blob blob) throws IOException,
//			SQLException {
//		if (blob == null) {
//			return null;
//		}
//		InputStream is = blob.getBinaryStream();
//		BufferedReader in = new BufferedReader(new InputStreamReader(is,"UTF-8"));
//		StringBuffer buffer = new StringBuffer();
//		String line = "";
//		while ((line = in.readLine()) != null) {
//			buffer.append(line);
//		}
//		return buffer.toString();
//	}
//
//	public final static void saveKindBill(List<String> list)
//			throws SQLException {
//		Connection conn = null;
//		Statement stmt = null;
//		boolean isErrorSql = false;
//		boolean oriStatus = false;
//		try {
//			conn = DBTools.getJndiConnection();
//			if (null != conn) {
//				oriStatus = conn.getAutoCommit();
//				conn.setAutoCommit(false);
//				stmt = conn.createStatement();
//				for (int i = 0; i < list.size(); i++) {
//					stmt.addBatch(list.get(i));
//				}
//				stmt.executeBatch();
//			} else
//				throw new SQLException("ERROR IN OBTAINING CONNECTION");
//		} catch (SQLException e) {
//			if (null != conn) {
//				isErrorSql = true;
//				conn.rollback();
//				throw e.getNextException();
//			} else
//				throw e;
//		} finally {
//			if (null != conn && !isErrorSql) {
//				try {
//					conn.commit();
//					conn.setAutoCommit(oriStatus);
//				} catch (SQLException e) {
//					throw new SQLException("ERROR IN COMMITING:"
//							+ e.getMessage());
//				}
//			}
//			com.martian.dao.tools.DBTools.closeConnection(conn, stmt, null);
//		}
//	}
//}
